package com.ecable.action;

import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.util.Map;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.sun.org.apache.commons.beanutils.BeanUtils;
import com.ecable.bean.StateTO;
import com.ecable.delegate.StateMgrDelegate;
import com.ecable.exception.ConnectionException;
import com.ecable.formbean.StateFormBean;
import com.ecable.util.UtilConstants;

public class UpdateStateAction extends HttpServlet {

	/**
	 * 
	 */
	private static final long serialVersionUID = 7048079584349074459L;

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		doPost(request, response);
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		RequestDispatcher rd = null;

		boolean flag = false;

		String path = "";

		StateFormBean sfb = new StateFormBean();

		Map map = request.getParameterMap();
		try {
			BeanUtils.populate(sfb, map);
		} catch (IllegalAccessException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		} catch (InvocationTargetException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();

		}

		try {

			try {

				StateTO sto = new StateTO(sfb);

				flag = new StateMgrDelegate().updateState(sto);

			} catch (ConnectionException e) {
				throw new ServletException("ConnectionTO Failed");

			}

			if (flag) {

				request.setAttribute("status", UtilConstants._UPDATE_STATE);

				path = UtilConstants._DISPLAY_STATE_HOME_ACTION;

			} else {

				request.setAttribute("status",
						UtilConstants._UPDATE_STATE_FAILED);

				path = UtilConstants._DISPLAY_STATE_HOME_ACTION;

			}

		} catch (Exception e) {
			e.printStackTrace();

			request.setAttribute("status", UtilConstants._INVALIED_ENTRY);

			path = UtilConstants._DISPLAY_STATE_HOME_ACTION;

		}

		rd = request.getRequestDispatcher(path);

		rd.forward(request, response);

	}

}
